package licode.unisop.platform.client.api;

import licode.unisop.platform.client.info.*;
import licode.unisop.provider.info.SiAuthPlatToUserIn;
import licode.unisop.provider.info.SiPlatRealmUpdateIn;
import licode.unisop.provider.info.SiPlatformId;
import licode.unisop.provider.info.SiRemoveAllRelAsset;

/**
 * 平台端开放的接口定义，用于增加、更新其信息
 *
 * @author WR
 */
public interface SiPlatformService {
    /**
     * 保持平台信息
     * @param platform 平台信息
     */
    void addPlatform(PlatformSaveIn platform);
    void updatePlatform(PlatformSaveIn platform);
    void updatePlatformRealm(SiPlatRealmUpdateIn platform);

    /**
     * 授权平台给指定用户
     * @param item 授权信息
     */
    void grantPlatform(SiAuthPlatToUserIn item);

    /**
     * 根据操作类型完成对资源的处理
     * @param assetIn 资源和操作类型
     */
    void saveAsset(PlatSaveAssetIn assetIn);
    void removeAttrOfAsset(PlatRemoveAssetAttributeIn req);

    void saveHoldAssets(PlatSaveHoldAssetsIn req);

    /**
     * 移除持有的资源（比如移除分组下的权限信息）
     */
    void removeRelAsset(PlatRemoveRelAssetIn delInfo);

    /**
     * 移除指定资源所有关联信息
     */
    void removeAllRelAsset(SiRemoveAllRelAsset delInfo);

    /**
     * 保存资源持有信息（比如保存持有权限的所有资源信息（比如分组、角色、用户等））
     */
    void saveAssetHolds(PlatSaveAssetHoldsIn req);
}
